import logging
import logging.handlers
# 创建 日志公用函数，语法基本固定
def logging_init(filename,when='midnight',interval=1,backup_count=3):
    # 1.创建日志器对象
    logger = logging.getLogger()
    # 2.设置日志打印级别
    logger.setLevel(logging.INFO)
    """
    logging.DEBUG 调试级别
    logging.INFO 信息级别
    logging.WARNING 警告级别
    logging.ERROR 错误级别
    logging.CRITICAL 严重错误级别
    """
    # 3.创建处理器对象
    # 控制台文件对象 st
    st = logging.StreamHandler()
    # 日志文件对象 fh
    fh = logging.handlers.TimedRotatingFileHandler(filename=filename,
                                                   when=when,
                                                   interval=interval,
                                                   backupCount=backup_count,
                                                   encoding='utf-8')
    """
       功能：初始化日志配置函数
       :param filename: 日志文件名
       :param when: 设定日志切分的间隔时间单位
       :param interval: 间隔时间单位的个数，指等待多少个 when 后继续进行日志记录
       :param backup_count: 保留日志文件的个数
       :return:
    """
    # 4.日志信息格式
    #      打印时间       日志级别       文件名         方法名         几行           埋点输出信息
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formatter = logging.Formatter(fmt)
    # 5.给处理器设置日志信息格式
    st.setFormatter(formatter)  # st 控制台对象
    fh.setFormatter(formatter)  # fh 日志文件对象
    # 6.给日志器添加处理器
    logger.addHandler(st)
    logger.addHandler(fh)

if __name__ == '__main__':
    # 执行日志公用方法，传递参数，绝对路径拼接，日志文件名为test.log，存储到log文件夹中
    logging_init("./test.log")
    # 设置日志埋点，提示信息为 info
    logging.info('埋点添加成功')
